/**
 * Created by ljunb on 16/5/27.
 */
let Util = {
    /*
     * fetch简单封装
     * url: 请求的URL
     * successCallback: 请求成功回调
     * failCallback: 请求失败回调
     * 
     * */
    get: (url, para, successCallback, failCallback) => {
        fetch(url, {
            method : 'GET', 
            // headers : {
            //     'content-Type' : 'multipart/form-data'
            // },
            //body : JSON.stringify(para)
        })
        //fetch(new Request(url, {method: 'post', cache: 'reload'}))
        .then((response) => response.text())
        .then((responseText) => {
            successCallback(JSON.parse(responseText));
            //successCallback(responseText);  
        })
        .catch((err) => {
            failCallback(err);
        });
    },


    post: (url, para, successCallback, failCallback) => {
        console.log('post');
        console.log(global.user.accessTicket);
        fetch(url, {
            method : 'POST', 
            headers : {
                'content-Type' : 'application/json',
                'juyou-ticket' : global.user.accessTicket,
            },
            body : JSON.stringify(para)
        })
        .then((response) => response.text())
        .then((responseText) => {
            successCallback(JSON.parse(responseText));
        })
        .catch((err) => {
            failCallback(err);
        });
    },


    post1: (url, para, successCallback, failCallback) => {
        console.log('post');
        console.log(para);
        console.log(global.user.accessTicket);
        fetch(url, {
            method : 'POST', 
            headers : {
                //'Content-Type': 'multipart/form-data',
                'Content-Type' : 'application/x-www-form-urlencoded',
                //'juyou-ticket' : global.user.accessTicket,
            },
            body : para
        })
        .then((response) => response.text())
        .then((responseText) => {
            successCallback(JSON.parse(responseText));
        })
        .catch((err) => {
            failCallback(err);
        });
    },


    //获取本地存储
    getStorage : (key, successCallback, failCallback) => {

        storage.load({
            'key': key,
            
            // autoSync(默认为true)意味着在没有找到数据或数据过期时自动调用相应的sync方法
            autoSync: true,
            
            // syncInBackground(默认为true)意味着如果数据过期，
            // 在调用sync方法的同时先返回已经过期的数据。
            // 设置为false的话，则始终强制返回sync方法提供的最新数据(当然会需要更多等待时间)。
            syncInBackground: true,
            
            // 你还可以给sync方法传递额外的参数
            syncParams: {
              extraFetchOptions: {
                // 各种参数
              },
              someFlag: true,
            },
          }).then(ret => {
            // 如果找到数据，则在then方法中返回
            // 注意：这是异步返回的结果（不了解异步请自行搜索学习）
            // 你只能在then这个方法内继续处理ret数据
            // 而不能在then以外处理
            // 也没有办法“变成”同步返回
            // 你也可以使用“看似”同步的async/await语法
            
            //console.log(ret);
            //this.setState({ user: ret });
            successCallback(ret);
          }).catch(err => {
            //如果没有找到数据且没有sync方法，
            //或者有其他异常，则在catch中返回
            //console.warn(err.message);
            // switch (err.name) {
            //     case 'NotFoundError':
            //         // TODO;
            //         break;
            //     case 'ExpiredError':
            //         // TODO
            //         break;
            // }
            failCallback(err);
          })


    }

}

export default Util;